﻿@model IEnumerable<Tecnosop.Dominio.FACTURA>
@using Tecnosop.Dominio
@section css {
    <style type="text/css">
        .data-header, .data-row
        {
            width: 100%;
            margin: 0;
            padding: 0;
        }
        .data-header td, .data-row td
        {
            width: 50%;
            border: 0;
            padding-top: 0px;
            padding-bottom: 0px;
            vertical-align: middle;
            text-align: center;
        }
        .data-header2 td, .data-row2 td
        {
            width: 50%;
            border: 0;
            padding-top: 0px;
            padding-bottom: 0px;
            vertical-align: middle;
            text-align: center;
        }
    </style>
}
@{
    ViewBag.Title = "Lista de todas las facturas";
    Layout = "~/Views/Facturas/_LayoutFacturas.cshtml";

    bool hayFacturas, hayFacturasConvenio, hayFacturasVentaDirecta;

    hayFacturas = !(Model.Count() == 0);

    if (hayFacturas)
    {
        hayFacturasConvenio = !(Model.Where(f => f.FACTURA_CONVENIO != null).Count() == 0);
        hayFacturasVentaDirecta = !(Model.Where(f => f.FACTURA_VENTA_DIRECTA != null).Count() == 0);
    }
    else
    {
        hayFacturasConvenio = hayFacturasVentaDirecta = false;
    }

    //var Facturas = hayFacturas ? Model.Where(f => f.FACTURA_CONVENIO == null && f.FACTURA_VENTA_DIRECTA == null) : new List<FACTURA>();
    var FacturasConvenios = hayFacturasConvenio ? Model.Where(f => f.FACTURA_CONVENIO != null).Select(f => f.FACTURA_CONVENIO) : new List<FACTURA_CONVENIO>();
    var FacturasVentaDirecta = hayFacturasVentaDirecta ? Model.Where(f => f.FACTURA_VENTA_DIRECTA != null).Select(f => f.FACTURA_VENTA_DIRECTA) : new List<FACTURA_VENTA_DIRECTA>();

    //var facturasGrid = Html.Telerik().Grid(Facturas)
    //    .Name("fac")
    //    .DataKeys(keys =>
    //        {
    //            keys.Add(k => k.NUMERO_FACTURA).RouteKey("id");
    //            keys.Add(k => k.RAZON_SOCIAL).RouteKey("RazonSocial");
    //        })
    //    .DataBinding(dataBinding => dataBinding.Server()
    //        .Delete(MVC.Facturas.Delete().GetRouteValueDictionary()))
    //    .Columns(columns =>
    //        {
    //            columns.Bound(f => f.NUMERO_FACTURA);
    //                //.Tem;
    //            columns.Bound(f => f.RAZON_SOCIAL);
    //            columns.Bound(f => f.FECHA_INSTALACION);
    //            //columns.Bound(f => f.
    //            columns.Bound(f => f.TOTAL);
    //            columns.Command(f =>
    //                {
    //                    f.Delete()
    //                        .ButtonType(GridButtonType.ImageAndText)
    //                        .HtmlAttributes(new { @class = "nice radius verysmall red button" });
    //                }).Width(170);
    //        })
    //    .Sortable(s => s.OrderBy(col => col.Add(member => member.FECHA_INSTALACION).Descending()))
    //    .PrefixUrlParameters(true);

    Func<int, int, int> GetTotalFactura = (total_bruto, descuento) =>
    {
        int valor_descuento = (int)(total_bruto * descuento * 0.01);
        int iva = (int)((total_bruto - valor_descuento) * 0.19);

        return total_bruto - valor_descuento + iva;
    };

    var facturasVentaDirectaGrid = Html.Telerik().Grid(FacturasVentaDirecta)
        .Name("facVD")
        .DataKeys(keys =>
        {
            keys.Add(k => k.NUMERO_FACTURA).RouteKey("id");
            keys.Add(k => k.RAZON_SOCIAL).RouteKey("RazonSocial");
        })
        .DataBinding(dataBinding => dataBinding.Server()
            .Delete(MVC.FacturaVentaDirecta.Delete().GetRouteValueDictionary()))
        .Columns(columns =>
        {
            columns.Bound(f => f.NUMERO_FACTURA)
                .Template(t => Html.ActionLink(t.NUMERO_FACTURA.ToString(), MVC.FacturaVentaDirecta.Details(t.NUMERO_FACTURA, t.RAZON_SOCIAL)))
                .Filterable(false);
            
            columns.Bound(f => f.RAZON_SOCIAL)
                .Width(165)
                .Filterable(true);
            //columns.Bound(f => f.CLIENTE.NOMBRE)
            //    .Template(t => Html.ActionLink(t.CLIENTE.NOMBRE, MVC.Cliente.Details(t.CLIENTE.RUT_CLIENTE)));
            columns.Bound(f => f.FACTURA.FECHA_INSTALACION);

            columns.Bound(f => f.CLIENTE.NOMBRE)
                .Template(t => Html.ActionLink(t.CLIENTE.NOMBRE, MVC.Cliente.Details(t.CLIENTE.RUT_CLIENTE)))
                .Title("Nombre cliente");
            
            columns.Bound(f => f.CLIENTE.RUT_CLIENTE)
                .Title("Rut cliente");
            
            @*columns.Template(
                @<text>
                        <table cellspacing="0" class="data-row2">
                            <tr>
                                <td>@Html.ActionLink(item.CLIENTE.NOMBRE, MVC.Cliente.Details(item.RUT_CLIENTE))</td>
                                <td>@item.RUT_CLIENTE</td>
                            </tr>
                        </table>
                    </text>)
                .HeaderTemplate(
                    @<text>
                            <table cellspacing="0" class="data-header2">
                                <tr>
                                    <td colspan="2"><strong>Datos del cliente</strong></td>
                                </tr>
                                <tr>
                                    <td>Nombre</td>
                                    <td>Rut</td>
                                </tr>
                            </table>
                        </text>)
                .HeaderHtmlAttributes(new { style = "padding-top: 0px; padding-bottom: 0px;" });*@

            columns.Template(
                @<text>
                    @if (item.FACTURA.NULA)
                    {
                        @:Nula
                    }
                    else if (item.FACTURA.FACTURA_EMITIDA.HasValue)
                    {
                        if (item.FACTURA.FACTURA_EMITIDA.Value)
                        {
                            @:Emitida
                        }
                        else
                        {
                            @:Creada
                        }
                    }
                    else
                    {
                        @:Creada
	                }
                    </text>)
                .Title("Estado");

            columns.Bound(f => f.FACTURA.TOTAL)
                .Title("Total bruto ")
                .Filterable(false)
                .Width(100);

            columns.Template(t => (GetTotalFactura(t.FACTURA.TOTAL ?? 0, t.FACTURA.DESCUENTO ?? 0)).ToString("$ #,##0"))
                .Title("Total");

            columns.Command(f =>
            {
                f.Delete()
                    .ButtonType(GridButtonType.ImageAndText)
                    .HtmlAttributes(new { @class = "nice radius verysmall red button" });
            }).Width(70);
        })
        .Sortable(s => s.OrderBy(col => col.Add(member => member.FACTURA.FECHA_INSTALACION).Descending()))
        .PrefixUrlParameters(true)
        .Selectable()
        .Pageable(pager => pager.PageSize(10))
        .Filterable();

    var facturasConveniosGrid = Html.Telerik().Grid(FacturasConvenios)
        .Name("facC")
        .DataKeys(keys =>
        {
            keys.Add(k => k.NUMERO_FACTURA).RouteKey("id");
            keys.Add(k => k.RAZON_SOCIAL).RouteKey("RazonSocial");
        })
        .DataBinding(dataBinding => dataBinding.Server()
            .Delete(MVC.FacturaConvenio.Delete().GetRouteValueDictionary()))
        .Columns(columns =>
        {
            columns.Bound(f => f.NUMERO_FACTURA)
                .Template(t => Html.ActionLink(t.NUMERO_FACTURA.ToString(), MVC.FacturaConvenio.Details(t.NUMERO_FACTURA, t.RAZON_SOCIAL)))
                .Filterable(false);
            
            columns.Bound(f => f.RAZON_SOCIAL)
                .Width(200);
            columns.Bound(f => f.FACTURA.FECHA_INSTALACION);
            //columns.Bound(f => f.CONVENIO.NUMERO_CONVENIO)
            //    .Template(t => );
            //columns.Bound(f => f.CONVENIO.CLIENTE.NOMBRE)
            //    .Template(t => );
            //columns.Bound(f => f.CONVENIO.FECHA_CONVENIO);

            columns.Bound(f => f.CONVENIO.CLIENTE.NOMBRE)
                .Template(t => Html.ActionLink(t.CONVENIO.CLIENTE.NOMBRE, MVC.Cliente.Details(t.CONVENIO.CLIENTE.RUT_CLIENTE)))
                .Title("Nombre cliente");
            
            columns.Template(
                @<text>
                        <table cellspacing="0" class="data-row">
                            <tr>
                                <td>@Html.ActionLink(item.CONVENIO.NUMERO_CONVENIO.ToString(), MVC.Convenio.Details(item.CONVENIO.NUMERO_CONVENIO))</td>
                                @*<td>@Html.ActionLink(item.CONVENIO.CLIENTE.NOMBRE, MVC.Cliente.Details(item.CONVENIO.CLIENTE.RUT_CLIENTE))</td>*@
                                <td>@item.CONVENIO.FECHA_CONVENIO</td>
                            </tr>
                        </table>
                    </text>)
                .HeaderTemplate(
                    @<text>
                            <table cellspacing="0" class="data-header">
                                <tr>
                                    <td colspan="2"><strong>Datos del convenio</strong></td>
                                </tr>
                                <tr>
                                    <td>Número</td>
                                    @*<td>Nombre cliente</td>*@
                                    <td>Fecha</td>
                                </tr>
                            </table>
                        </text>)
                .HeaderHtmlAttributes(new { style = "padding-top: 0px; padding-bottom: 0px;" });

            columns.Template(
                    @<text>
                    @if (item.FACTURA.NULA)
                    {
                        @:Nula
                    }
                    else if (item.FACTURA.FACTURA_EMITIDA.HasValue)
                    {
                        if (item.FACTURA.FACTURA_EMITIDA.Value)
                        {
                            @:Emitida
                        }
                        else
                        {
                            @:Creada
                        }
                    }
                    else
                    {
                        @:Creada
	                }
                    </text>)
                    .Title("Estado");

            columns.Bound(f => f.FACTURA.TOTAL)
                .Title("Total bruto")
                .Filterable(false)
                .Width(120);

            columns.Template(t => (GetTotalFactura(t.FACTURA.TOTAL ?? 0, t.FACTURA.DESCUENTO ?? 0)).ToString("$ #,##0"))
                    .Title("Total");

            columns.Command(f =>
            {
                //f.Custom("Editar")
                //    .Text("Editar")
                //    .Ajax(false)
                //    .ButtonType(GridButtonType.ImageAndText)
                //    .ImageHtmlAttributes(new { @class = "t-icon t-edit" })
                //    .HtmlAttributes(new { @class = "nice radius verysmall white button" })
                //    .Action(MVC.FacturaConvenio.ActionNames.Edit, MVC.FacturaVentaDirecta.Name);
                f.Delete()
                    .ButtonType(GridButtonType.ImageAndText)
                    .HtmlAttributes(new { @class = "nice radius verysmall red button" });
            }).Width(70);
        })
        .Sortable(s => s.OrderBy(col => col.Add(member => member.FACTURA.FECHA_INSTALACION).Descending()))
        .PrefixUrlParameters(true)
        .Selectable()
        .Pageable(pager => pager.PageSize(10))
        .Filterable();
}
<fieldset>
    <legend>Lista de todas las facturas</legend>
    <br />
    @(Html.Telerik().TabStrip()
        .Name("FacturasTab")
        .Items(items =>
        {
            //items.Add()
            //    .Text("Facturas")
            //    .Selected(true)
            //    .Content(facturasGrid.ToHtmlString())
            //    .ImageUrl(Links.Content.DefaultIcon._16x16.document_png)
            //    .ContentHtmlAttributes(new { style = "padding-top: 20px; padding-bottom: 15px;" });
            items.Add()
                .Text("Facturas de convenio")
                .Selected(true)
                .Content(facturasConveniosGrid.ToHtmlString())
                .ImageUrl(Links.Content.DefaultIcon._16x16.file_png)
                .ContentHtmlAttributes(new { style = "padding-top: 20px; padding-bottom: 15px;" });
            items.Add()
                .Text("Facturas de venta directa")
                .Content(facturasVentaDirectaGrid.ToHtmlString())
                .ImageUrl(Links.Content.DefaultIcon._16x16.bag_png)
                .ContentHtmlAttributes(new { style = "padding-top: 20px; padding-bottom: 15px;" });
        })
    )
</fieldset>